Windowsでgtestを使ってすべてのライブラリをunittestしようとしたらexeを実行する必要があることに気づきスクリプトを書きました。
単純に実行してそのログと結果を取得してくるだけのものです。
パス付で実行しようとすると実行がうまくいかないことがあるのでいったん実行ファイルのあるところに移動してから実行しています。
class ExeExecutor public def initialize() @result = false @log = "" end def exec(exe) origin_path = Dir.pwd Dir.chdir(File.dirname(exe)) exename = File.basename(exe) logname = "log_#{exename}.txt" @result = system("#{exename} > #{logname}") File.open(logname, "r"){ |f| @log << f.read } File.delete(logname) Dir.chdir(origin_path) end def has_failed return @result==false end def log() return @log end private @result @log end executor = ExeExecutor.new executor.exec("C:/test/Release/test.exe") if executor.has_failed puts executor.log end